﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaPresentacion.Commands;
using CapaPresentacion.Vistas;
using Entidades;
using CapaLogica;
using System.Windows.Input;
using System.Windows;
using System.Windows.Data;
using System.Transactions;
using Microsoft.Reporting.WinForms;
using System.Windows.Forms.Integration;


namespace CapaPresentacion.Controles
{
    class ReporteListaAlumnosViewModel
    {
        public event ReiniciarCU ReiniciarCU;

        private RelayCommand reporteListaAlumnosCommand;

        ReporteListaAlumnos view;
        Guid idTurno;

        public Guid IdTurno
        {
            get
            {
                return idTurno;
            }

            set
            {
                idTurno = value;

            }
        }

        public List<ViewEntity> ListaTurnos { get; set; }

        public ICommand ReporteListaAlumnosCommand
        {
            get
            {
                return reporteListaAlumnosCommand;
            }
        }

        public ReporteListaAlumnosViewModel() { }

        public void Inicializar(ReporteListaAlumnos vista)
        {

            ListaTurnos = new InscripcionAlumnoLogica().ObtenerTurnosConInscriptos();

            if (ListaTurnos.Count > 0 && ListaTurnos != null)
            {
                this.view = vista;
                this.reporteListaAlumnosCommand = new RelayCommand(GenerarReporte);
            }
            else
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "No se han encontrado turnos que tengan alumnos inscriptos");
                nueva.ShowDialog();
                this.ReiniciarCU(CasosDeUso.NuevoTurno);

            }

        }

        private void GenerarReporte(Object parameter)
        {
            if (idTurno != Guid.Empty)
            {
                IList<InformeListaAlumnos> ListaAlumnos = new List<InformeListaAlumnos>();

                ListaAlumnos = new AlumnoLogica().GenerarInformeListaAlumnos(idTurno);

                if (ListaAlumnos.Count > 0 )
                {                   

                    this.view.rvListaAlumnos.ProcessingMode = ProcessingMode.Local;

                    this.view.rvListaAlumnos.LocalReport.DataSources.Clear();
                    this.view.rvListaAlumnos.LocalReport.DataSources.Add(new ReportDataSource("ConjuntoDatos", ListaAlumnos));
                                   

                    this.view.rvListaAlumnos.LocalReport.ReportEmbeddedResource = "CapaPresentacion.Controles.ReporteListaAlumnos.rdlc";
                    this.view.rvListaAlumnos.ShowBackButton = false;
                    this.view.rvListaAlumnos.ShowRefreshButton = false;
                 
                    
                    List<ReportParameter> parameters = new List<ReportParameter>();

                    Turno turno = new TurnoLogica().ObtenerEntidad(idTurno);

                    parameters.Add(new ReportParameter("CicloLectivoParameter", turno.CicloLectivo.NombreCicloLectivo));
                    parameters.Add(new ReportParameter("NombreTurnoParameter", turno.NombreTurno));
                    parameters.Add(new ReportParameter("NombreSalaParameter", turno.NombreSala));

                    this.view.rvListaAlumnos.LocalReport.SetParameters(parameters);

                    this.view.rvListaAlumnos.RefreshReport();

                    this.view.spReporte.Visibility = Visibility.Visible;

                }
                else
                {
                    VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "No existen alumnos inscriptos al turno seleccionado");
                    nueva.ShowDialog();
                    
                }
            }
            else
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "Debe seleccionar un turno");
                nueva.ShowDialog();

            }


        }



















    }
}
